package br.com.estevam.sisfin.pages.cadastros;

import java.util.List;

import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.PageActivationContext;
import org.apache.tapestry5.corelib.components.BeanEditForm;
import org.apache.tapestry5.ioc.annotations.Inject;

import br.com.estevam.sisfin.annotations.InjectSelectionModel;
import br.com.estevam.sisfin.base.DefaultPage;
import br.com.estevam.sisfin.daos.interfaces.AgenciaDAO;
import br.com.estevam.sisfin.daos.interfaces.BancoDAO;
import br.com.estevam.sisfin.entities.Agencia;
import br.com.estevam.sisfin.entities.Banco;
import br.com.estevam.sisfin.enums.OrderEnums;

public class CadastroAgenciaAddEdit extends DefaultPage {

	@PageActivationContext
	private Agencia agencia;

	@Component
	private BeanEditForm beanEditForm;

	@Inject
	private AgenciaDAO agenciaDAO;

	@Inject 
	private BancoDAO bancoDAO;

	@InjectSelectionModel(labelField = "descricao", idField = "id")
	private List<Banco> listBanco;

	@SuppressWarnings("unchecked")
	void onPrepare(){
		this.listBanco = (List<Banco>) this.bancoDAO.findAllOrderBy("descricao", OrderEnums.ASC_ORDER);
	}

	void onValidateFromListBanco(Banco banco){
		if(banco == null){
			beanEditForm.recordError("Obrigatorio escolher um banco!");
		}
	}
	
	void onValidateFromCodAgencia(String codAgencia){
		final Agencia a = agenciaDAO.findByCodAgencia(codAgencia);
		if(a != null && this.agencia.getId() == 0){
			beanEditForm.recordError("O Agencia do descrição é " + a.getDescricao() + " e código é " + a.getCodAgencia());
		} 
	}

	Class<CadastroAgencia> onSuccess(){
		agenciaDAO.addOrUpdate(agencia);
		return CadastroAgencia.class;
	}

	public boolean isEdit(){
		return (this.getAgencia().getId() == 0 ? true : false);
	}

	public Agencia getAgencia() {
		return agencia;
	}

	public void setAgencia(Agencia agencia) {
		this.agencia = agencia;
	}

	public List<Banco> getListBanco() {
		return listBanco;
	}

	public void setListBanco(List<Banco> listBanco) {
		this.listBanco = listBanco;
	}

}
